package main

import "fmt"

func main() {
	var str = "你好,golang"
	//for range 遍历字符串
	for key, val := range str {
		// fmt.Println("key=", key, "val=", val)
		/*  汉字使用utf-8输出  字符以 ASCII码值输出
		key= 0 val= 20320
		key= 3 val= 22909
		key= 6 val= 44
		key= 7 val= 103
		key= 8 val= 111
		key= 9 val= 108
		key= 10 val= 97
		key= 11 val= 110
		key= 12 val= 103
		*/
		fmt.Printf("Key=%v,val=%c\n", key, val)
		/*
			Ksey=0,val=你
			Key=3,val=好
			Key=6,val=,
			Key=7,val=g
			Key=8,val=o
			Key=9,val=l
			Key=10,val=a
			Key=11,val=n
			Key=12,val=g
		*/
	}

	// for range 遍历切片
	var arr = []string{"php", "java", "js"}
	for _, val := range arr {
		fmt.Println("val=", val)
	}
	/*
			val= php
		    val= java
		    val= js
	*/

	//golang中 switch的穿透fallthrought
	// fallthrought 语法可以执行满足条件的case的下一个case,为了兼容C语言中的case设计的

	var a int8 = 2
	switch {
	case a < 3:
		fmt.Println("a<3")
		fallthrough //向下穿透打印(即使当前case不符合也会穿透至下方)  （ 可以打印出来a<3 a<4 ）不加上fallthrough只打印这一行就跳出
	case a < 4:
		fmt.Println("a<4")
	case a < 5:
		fmt.Println("a<5") //因为上面a<4未穿透，即跳出 不打印 a<5
	}

}
